package me.feng.analyzeAS
{

	/**
	 *
	 * @author feng 2016-3-31
	 */
	public class KeyWordRegExp
	{
		/**
		 * 包名正则
		 */
		public static const PACKAGE_RE:RegExp = /package([.\s_\w$]+)?/g;
		/**
		 * 类名
		 */
		public static const CLASS_RE:RegExp = /public\s+class\s+([\w$]+)/g;

		/**
		 * 所有类名（包括内部类）
		 */
		public static const ALL_CLASS_RE:RegExp = /class\s+([\w$]+)/g;

		/**
		 * 接口名
		 */
		public static const INTERFACE_RE:RegExp = /public\s+interface\s+([\w$]+)/g;

		/**
		 * 父类名
		 */
		public static const SUPER_RE:RegExp = /extends\s+([\w$]+)/g;

		/**
		 * 实现的接口
		 */
		public static const USE_INTERFACE_RE:RegExp = /implements([\w$\s,]+)/g;

		/**
		 * 函数
		 */
		public static const FUNCTION_RE:RegExp = /(((public|protected|private|static|override)\s+)+)function\s+([\w$]+)\s*\(([\w$:,\s=<>.*"]*)\)\s*(:\s*([\w$<>.*]+))?/g;

		/**
		 * 函数参数
		 */
		public static const PARAMS_RE:RegExp = /([\w$]+)\s*:\s*([\w$.<>*]+)/g;

		/**
		 * 函数内变量声明
		 */
		public static const FUNCTION_IN_VAR_RE:RegExp = /var\s+([\w$]+)/g;

		/**
		 * 存取器
		 */
		public static const ACCESSORS_RE:RegExp = /(((public|protected|private|static|override)\s+)+)function\s+(get|set)\s+([\w$]+)\s*\(([\w$:,\s=<>.*]*)\)\s*(:\s*([\w$<>.*]+))?/g;

		/**
		 * 属性
		 */
		public static const ATTRIBUTE_RE:RegExp = /(((public|protected|private|static|override)\s+)+)(var|const)\s+([\w$]+)(\s*:\s*([\w$.<>]+))?/g;

	}
}
